package com.zyl.pts.config.anno;

import com.zyl.pts.config.validated.StatusValidated;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

/**
 * @version v1.0
 * @ProjectName: product_source
 * @Package: com.zyl.pts.config.anno
 * @ClassName: Status
 * @Description TODO()
 * @Author 翟玉龙
 * @Date 2024/11/20-10:04
 */
@Documented // 元注解
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE}) // 元注解
@Retention(RetentionPolicy.RUNTIME) // 运行时生效
@Constraint(
        validatedBy = {StatusValidated.class} // 提供校验规则的类
)
public @interface Status {
    // 提供校验失败后的提示信息
    String message() default "过程状态只能为：（养殖中，已检疫，已出栏，已屠宰，已入库，已销售）";

    // 指定分组
    Class<?>[] groups() default {};

    // 负载 获取到State注解的附加信息
    Class<? extends Payload>[] payload() default {};
}
